package com.searchengine.service;

import com.searchengine.entity.SearchHistory;
import com.searchengine.entity.SearchResult;

import java.util.List;
import java.util.Map;

/**
 * 搜索服务接口
 */
public interface SearchService {

    /**
     * 执行搜索
     * @param keyword 搜索关键词
     * @param userId 用户ID（可为null）
     * @param ipAddress IP地址
     * @return 搜索结果列表
     */
    List<SearchResult> search(String keyword, Long userId, String ipAddress);

    /**
     * 从百度API获取搜索结果
     * @param keyword 搜索关键词
     * @return 百度搜索结果（原始数据）
     */
    List<Map<String, Object>> fetchFromBaiduAPI(String keyword);

    /**
     * 根据关键词权重对搜索结果进行排序
     * @param results 搜索结果列表
     * @param keyword 搜索关键词
     * @return 排序后的搜索结果
     */
    List<SearchResult> sortByKeywordsWeight(List<SearchResult> results, String keyword);

    /**
     * 获取用户的搜索历史
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 搜索历史列表
     */
    List<SearchHistory> getUserSearchHistory(Long userId, Integer limit);

    /**
     * 清除用户的搜索历史
     * @param userId 用户ID
     */
    void clearUserSearchHistory(Long userId);

    /**
     * 记录搜索历史
     * @param keyword 关键词
     * @param userId 用户ID（可为null）
     * @param ipAddress IP地址
     * @return 搜索历史对象
     */
    SearchHistory recordSearchHistory(String keyword, Long userId, String ipAddress);

    /**
     * 调用AI大模型增强搜索结果
     * @param results 搜索结果
     * @param query 查询内容
     * @return 增强后的搜索结果
     */
    List<SearchResult> enhanceWithAI(List<SearchResult> results, String query);
}